package org.opens.javaskill.string;

import cn.hutool.core.util.StrUtil;
import com.google.common.base.Splitter;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class StringUtil {

    /**
     * 简介:
     *      trim函数可以去除字符串两边的空格.
     * 输出:
     *      3
     */
    @Test
    public void test1() {
        String str = "    ssd   ";
        System.out.println(str.trim().length());
    }

    /**
     * 简介:
     *      web应用中判断一个字符串是否为空, 一般判断以下三种情况:
     *          1. 判断这个字符串是否都是空格;
     *          2. 判断这个字符串是否为null,
     *          3. 判断这个字符串是"";
     *      而StrUtil.isBlank()满足这个要求, 可以去查看源码.
     */
    @Test
    public void test2() {
        String str1 = "    ssd   ";
        String str2 = "       ";
        String str3 = null;
        System.out.println(StrUtil.isBlank(str1));
        System.out.println(StrUtil.isBlank(str2));
        System.out.println(StrUtil.isBlank(str3));
    }

    @Test
    public void test3() {
        String str = "";
        System.out.println(str.substring(0, str.length() - 1));
    }

    @Test
    public void test4() {
        List<String> keywords = new ArrayList<>();
        keywords.add("asd1");
        keywords.add("asd2");
        keywords.add("asd3");
        keywords.add("asd3");
        keywords.add("asd3");
        keywords.add("asd3");
        StringBuilder str = new StringBuilder();
        for (String keyword : keywords) {
            str.append(keyword).append(",");
        }
        System.out.println(str.toString().endsWith(",") ? str.substring(0, str.length() - 1) : str.toString());
    }

    /**
     * 功能:
     *      -简介
     *          在md5加密方法中, 会先使用字符串的getByte()将要加密的字符串处理成byte[], 然后执行其他操作.
     *      -输出
     *          101
     *          119
     *          97
     *          121
     *          116
     *          101
     *          107
     *      -说明
     *          对比ASCII码表, 会发现, 这个方法就是将指定字符串中的每一个字符都转换成了对应的byte数字.
     *
     */
    @Test
    public void test5() {
        String password = "ewaytek";
        for(byte temp : password.getBytes()) {
            System.out.println(temp);
        }
    }

    @Test
    public void test6() {
        String str = (String) null;//这个不会报错, null可以被强制转换为String
        //System.out.println(Integer.valueOf(str)); //会报错java.lang.NumberFormatException: null
    }

    @Test
    public void test7() {
        String str = "/python/lib/sasd.pcm";
        System.out.println(str.substring(str.lastIndexOf("/") + 1, str.length()));

        System.out.println(str.substring(1, str.length()));
    }

    @Test
    public void test8() {
        String str1 = "45,46,111";
        String str2 = "45";
        List<String> list1 = Splitter.on(",").splitToList(str1);
        List<String> list2 = Splitter.on(",").splitToList(str2);
        System.out.println(list1);
        System.out.println(list2);
    }

    @Test
    public void test9() {
        String str = "工资,钱,票子，金子";
        System.out.println(Arrays.toString(str.split(",")));
    }

}
